package com.zwk.common.validator.annotation;

import com.zwk.common.validator.ListValueConstraintValidator;
import org.springframework.core.annotation.AliasFor;

import javax.validation.Constraint;
import javax.validation.Payload;
import javax.validation.constraints.NotNull;
import java.lang.annotation.*;

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
//使用哪一个校验器
@Constraint(
        validatedBy = {ListValueConstraintValidator.class}
)
public @interface ListValue {
    //校验出错误信息去哪里取 默认使用JSR303的ValidationMessages.properties 文件中取
    String message() default "只能输入固定的值";

    /**
     * 有些字段在不同环境下的校验规则不同
     * 比如id在新增的时候必须为空,但是在修改的时候必须不为空
     */
    Class<?>[] groups() default {};
    //一些负载信息
    Class<? extends Payload>[] payload() default {};

    @AliasFor("value")
    int[] listValue() default {};

    @AliasFor("listValue")
    int[] value() default {};
}
